package com.techbh.ridecall;

import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.graphics.Color;
import android.os.Bundle;
import android.util.Log;

public class Notificador {
	
	private Context ctx;
	private NotificationManager nm;
	private static final int ID_NOTIF_RIDECALL = 1717;
	public static final String APPTAG = "RideCallNotificacao";
	
	public Notificador(Context ctx){

		//Gera uma notificação da ação
		this.ctx = ctx;
		
		getSystemInstance();

	}
	
	
	public void getSystemInstance(){
		nm = (NotificationManager) this.ctx.getSystemService(Context.NOTIFICATION_SERVICE);
	}
	
	
	public Notification prepareNotificacao(){
		Notification notification = new Notification();

		notification.icon = R.drawable.ic_tel;
		notification.when = System.currentTimeMillis();

		notification.defaults |= Notification.DEFAULT_VIBRATE;
		notification.defaults |= Notification.DEFAULT_LIGHTS;

		notification.ledARGB = Color.WHITE;
		notification.ledOnMS = 1500;
		notification.ledOffMS = 1500;
		
		/*
		 * 
		notification.flags |= Notification.FLAG_AUTO_CANCEL;
		notification.flags |= Notification.FLAG_SHOW_LIGHTS;
		*/

		return notification;
	}
	
	
	public void informaRegistroAlerta(String numero, String metodo, String endereco){
		int id_notif = ID_NOTIF_RIDECALL;
		String title = "RideCall";
		String msg = ""; 

		Log.d(APPTAG, "Notificacao :  " + getClass().getCanonicalName());
		
		Notification ira = prepareNotificacao();
		
		//ira.flags |= Notification.FLAG_ONGOING_EVENT;
		ira.flags |= Notification.FLAG_NO_CLEAR;
		
		//????
		PendingIntent pendingIntent = PendingIntent.getActivity(this.ctx, 0, null, 0);
		
		title += " - '" + numero + "' ";
		msg =  " Alerta de " + metodo + " registrado ";
		Log.d(APPTAG, "Notificacao msg:" + msg);
		
		ira.tickerText = msg + " para " + numero + " quando você se aproximar de " + endereco;
		
		ira.setLatestEventInfo(this.ctx, title, msg, pendingIntent);
		
		id_notif = getIdTel(numero);
		Log.d(APPTAG, "Notificação ID :" + id_notif);
		
		nm.notify(id_notif, ira);		
	}
	
	
	public void informaExecucaoAlerta(String numero, Bundle extras){
		int id_notif = ID_NOTIF_RIDECALL;
		String title = "RideCall";
		String msg = ""; 

		Log.d(APPTAG, "Notificacao :  " + getClass().getCanonicalName());

		Notification ira = prepareNotificacao();
		
		ira.flags |= Notification.FLAG_AUTO_CANCEL;
		
		//????
		PendingIntent pendingIntent = PendingIntent.getActivity(this.ctx, 0, null, 0);
		
		title += " - '" + numero + "' ";
		msg = "Alerta executado!";
		Log.d(APPTAG, "Notificacao msg:" + msg);

		ira.setLatestEventInfo(this.ctx, title, msg, pendingIntent);
		id_notif = getIdTel(numero);
		Log.d(APPTAG, "Notificação ID :" + id_notif);
		
		nm.notify(id_notif, ira);		
	}
	
	
	public void excluiRegistroAlerta(String numero){
		nm.cancel( getIdTel(numero) );
	}
	
	
	public int getIdTel(String tel){
		String limpo = "";
		
		int qtde = tel.length();
		for(int i=0; i<qtde; i++ ){
			switch(tel.charAt(i)){
			case '0':
			case '1':
			case '2':
			case '3':
			case '4':
			case '5':
			case '6':
			case '7':
			case '8':
			case '9':
				limpo += tel.charAt(i);
				break;
			default:
			}
		}
		return Integer.parseInt(limpo);
	}

}
